/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package programa;

import java.io.File;
import sintatico.AnalisadorSintatico;

/**
 *
 * @author Gabriel, Lucas, Rodrigo
 */
public class CompiladorAlgC {

    public static AnalisadorSintatico analisador;
    public static boolean allFiles;

    /**
     * @param args the command line arguments
     * [0]: input file name
     * [1]: output file name
     */
    public static void main(String[] args) {
        if (args.length > 2) {
            if (args[2].equals("-af")) {
                allFiles = true;
            } else {
                allFiles = false;
            }
        } else {
            allFiles = false;
        }

        try {
            testFiles(allFiles, args[0], args[1]);
        } catch (Exception e) {
            interfacePrograma();
        }
    }

    public static void testFiles(boolean allFiles, String input, String output) {
        //diretório atual
        File currentDir = new java.io.File("");
        //path diretório dos arquivos de entrada
        String inputDirName = currentDir.getAbsolutePath() + File.separator + "entrada" + File.separator;
        File inputDir = new java.io.File(inputDirName);
        //path diretório dos arquivos de saida
        String outputDirName = currentDir.getAbsolutePath() + File.separator + "saida" + File.separator;
        File outputDir = new java.io.File(outputDirName);
        //lista dos arquivos de entrada        
        String[] inputFileList = inputDir.list();
        //lista dos arquivos de saida
        String[] outputFileList = outputDir.list();

        //path do arquivo de entrada
        String inputFilePath;
        //path do arquivo de saida
        String outputFileName;
        String outputFilePath;
  
        if (allFiles) {
            for (int i = 0; i < inputDir.list().length; i++) {
                inputFilePath = inputDirName + inputFileList[i];
                outputFileName = output.replace(".txt", "_" + inputFileList[i]);
                outputFilePath = outputDirName + outputFileName;
                //testOutputFilePath = outputDirName + inputFileList[i];
                analisador = new AnalisadorSintatico(inputFilePath, outputFilePath);
                analisador.programa();
                System.out.println("Arquivo " + outputFileName + " criado");
                System.out.println("");
            }
        } else {
            outputFileName = output;
            inputFilePath = inputDirName + File.separator + input;
            outputFilePath = outputDirName + File.separator + outputFileName;
            //testOutputFilePath = outputDirName + File.separator + input;
            analisador = new AnalisadorSintatico(inputFilePath, outputFilePath);
            analisador.programa();
            System.out.println("Arquivo " + outputFileName + " criado");
            System.out.println("");
        }
    }

    public static void interfacePrograma() {
        String version = "Versao 0.2 Revision 13";
        System.out.println("");
        System.out.println("Compilador Alg C");
        System.out.println("----------------");
        System.out.println("Argumentos:");
        System.out.println("1) nome do arquivo de entrada (ex: input1.txt)");
        System.out.println("2) nome do arquivo de saida (ex: output1.txt)");
        System.out.println("3) -af | opcional, analisa todo o diretorio dos arquivos de entrada");
        System.out.println("");
        System.out.println("");
        System.out.println(version);
        System.out.println("----------------");
    }
}